Setup a bedrock minecraft server with frp

基岩版frp开服教程。

准备

适用于 Ubuntu 的 Linux 服务器可以一般可以运行在其他发行版上。

  • 下载 Minecraft 服务端文件 Minecraft 🔗

  • frp 客户端 (自行GitHub)

配置

配置文件

  • 在下载文件夹中默认包含 bedrock_server_how_to.html ,这是官方手册,能解决部分配置问题。

  • 阅读官方手册并配置 server.properties 文件 或者查看 Minecraft Wiki 中文教程: 架设基岩版服务器 🔗

  • 为了使用 frp 可能需要将 transport 字段改为 raknet。

导入世界(可选)

需注意: 如果直接从游戏中导出世界可能存在导出者数据清空的情况 如:导出者物品与经验消失 驯服的宠物所有者不明 等情况。

  • 将 .mcworld 或 .zip 文件解压,并复制到 worlds 文件夹中。

  • 更改文件夹名称为 server.properties 中 level-name 字段值 (或者更改 level-name 字段)

安全与服务(该部分systemctl命令适用于使用Systemd 的 Linux)

请注意:请勿直接将服务器搭建于公网上的设备,这可能使你的设备遭到攻击。

  • frp 隧道可以增大安全性(请确保您选择了值得信任的服务)。

为服务器创建一个低级用户,并用该账户运行服务器

(* 请注意,如要使用低级用户,您需要转移权限,Linux可用:sudo chown -R %User name%:%Group name% %Path to your Server%)

sudo useradd -r -s %path to your favourite shell% -d %Path to user home% -m %User Name%

请替换带有 %% 的字段。

使用 Systemed 服务

  • 创建服务文件
cd /etc/systemd/system/
touch %Service Name%.service
sudo nano /etc/systemd/system/%Service Name%.service
基础配置

填写以下内容 (* 该配置无法直接从终端输入命令!优化后配置请见下文)

[Unit]
Description=service description
After=network.target

[Service]
User=%User name%
Group=%Group%
WorkingDirectory=%Path to your server%
Environment=LD_LIBRARY_PATH=%Path to your server%
ExecStart=%Path to your server%/bedrock_server

# 失败时重启
Restart=on-failure
# 等待时间
RestartSec=10

# 限制服务权限
ProtectHome=true
ProtectSystem=full
PrivateDevices=true
NoNewPrivileges=true
ReadWriteDirectories=%Path to your server%

[Install]
WantedBy=multi-user.targe
优化配置

请根据下方配置更改或新建字段,请勿直接 Ctrl C/V!

...
[Service]
Type=forking
ExecStart=/usr/bin/screen -dms %User name% %Path to your server%/bedrock_server
ExecStop=/usr/bin/bash %Path to your script.%
...
  • ExecStop 脚本文件

适用于有一个基岩版服务器运行

#!/bin/bash
/usr/bin/screen -S %User name% -X stuff "stop\n"
for i in {1..60}; do
    pgrep -f bedrock_server > /dev/null || exit 0
    sleep 1
done
exit 1
常用管理命令
# 同步配置
sudo systemctl daemon-reload
# 开启自启动
sudo systemctl enable %Service name%
# 开启服务
sudo systemctl start %Service name%
# 停止服务 (* 请注意:如果使用标准配置停止为强制停止服务,可能会损坏存档!)
sudo systemctl stop %Service name%
# 检查服务状态
sudo systemctl status %Service name%
# 标准配置停止服务器 (* systemd 会在停止10秒后自动重启服务,需要再手动 systemctl stop)
sudo -u bemc screen -S %User name% -X stuff "stop\n"
# 连接到服务器终端控制台
sudo -u %User name% screen -r %Screen name%

游玩

本地测试

  • 打开 Minecraft 点击 Play 在服务器一栏点击 + 添加服务器,填入 server.properties 中的 ip (未填写见下文) 与 port

默认 server.properties 不填写特定 ip 即为监听全部。 Linux 可用 ifconfig 查看并找到当前与测试设备相同的网络ip,Windows 可用 ipconfig。

若提示无法加入请检查 server.properties 中 allowlist 状态,或 连接到服务器终端控制台(命令见上文) 输入 allowlist off (* 注意,这会允许可加入的所有人加入您的游戏 了解更多:allowlist - Wiki 🔗)

连接 Frp

  • 在 Frp 配置界面中 将 type 改为 udp,并填写相应字段

如果无法连接,将 service.properties transport 字段改为 raknet。

后续

阅读 Minecraft Wiki 上的教程

教程:服务器维护 - Minecraft 中文维基 🔗

Light